package com.katze.boot.file.entity;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.UUID;

/**
 * 说  明：
 * 作  者：admin
 * 日  期：2023-12-07
 */
@Data
@TableName("sys_file")
public class FileEntity implements Serializable {

    private static final long serialVersionUID = 6890712224761862647L;
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 所有者ID
     */
    private Long owner;

    /**
     * 文件服务器id
     */
    private String fileDatabaseId;

    /**
     * @说明 文件夹id/ftp配置id/oos配置id，每种 fileDatabaseType对应的扩展位置
     * @第一种 FileDatabaseType.BS ->文件夹id</br>
     * @第二种 FileDatabaseType.OOS->容器id (待实现)</br>
     * @第三种 FileDatabaseType.FTP->ftp配置id (待实现)</br>
     */
    private String fileDatabaseExtendId;

    /**
     * 文件大小
     */
    private Long size;

    /**
     * 存在标识，先保存false，业务完成后改为true
     */
    @TableField("`exists`")
    private int exists;

    /**
     * 文件名
     */
    private String name;

    /**
     * 唯一标识
     */
    private String uniqueName;

    /**
     * 文件的描述
     */
    private String description;

    /**
     * 扩展名
     */
    private String extension;

    /**
     * 文件计算后的md5
     */
    private String md5;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 数据来源
     */
    private String dataSource;

    @TableField(exist = false)
    private transient String path;

    public FileEntity(){}

    public FileEntity(FileTransfer file){
        int index = file.getName().lastIndexOf(".");
        if (index != -1) {
            this.setName(file.getName().substring(0, index));
            this.setExtension(file.getName().substring(index + 1));
        } else {
            this.setName(file.getName());
        }
        this.setSize(file.getSize());
        this.setCreateTime(new Date());
        this.setExists(1);
        this.setUniqueName(UUID.randomUUID().toString().replace("-", ""));
        this.setMd5(file.getId());
        this.setDataSource(file.getFrom());
        this.setOwner(Long.valueOf(file.getOwner()));
    }
}
